﻿using System.Net;

/*
 *  author: able
 *  @2012/2/21 12:10:18
 * 
 */
namespace __ts.Core.Api
{
    /// <summary>
    /// 
    /// </summary>
    public interface IoClient : IoService
    {
        /**
         * Returns the connect timeout in milliseconds. The default value is 1
         * minute.
         *
         * @return the connect timeout in milliseconds
         */
        long getConnectTimeoutMillis();

        /**
         * Sets the connect timeout in milliseconds. The default value is 1 minute.
         *
         * @param connectTimeoutInMillis Connection timeout in ms
         */
        void setConnectTimeoutMillis(long connectTimeoutInMillis);

        /**
         * Connects to the specified remote address.
         *
         * @param remoteAddress Remote {@link SocketAddress} to connect
         * @return the {@link IoFuture} instance which is completed when the
         *         connection attempt initiated by this call succeeds or fails.
         */
        IoFuture<IoSession> connect(SocketAddress remoteAddress);

        /**
         * Connects to the specified remote address binding to the specified local
         * address.
         *
         * @param remoteAddress Remote {@link SocketAddress} to connect
         * @param localAddress  Local {@link SocketAddress} to use while initiating connection to
         *                      remote {@link SocketAddress}
         * @return the {@link IoFuture} instance which is completed when the
         *         connection attempt initiated by this call succeeds or fails.
         */
        IoFuture<IoSession> connect(SocketAddress remoteAddress, SocketAddress localAddress);
    }
}